package com.egg.mall.service.sku;

import com.egg.common.mybatis.service.IBaseService;
import com.egg.mall.entity.sku.Sku;
import com.egg.mall.model.request.SkuPut;
import com.egg.mall.model.request.SkuStockQuantityPut;
import com.egg.mall.model.request.SpuPostOrPut;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;


/**
 * @author east
 * @since 2022-08-08
 */
public interface ISkuService extends IBaseService<Sku> {


    void saveSku(Serializable spuId, List<SpuPostOrPut.Sku> list, Map<String, Long> specIdMap);

    List<Sku> findBySpuId(Serializable spuId);

    List<Sku> findBySpuId(Collection<? extends Serializable> spuId);

    void delBySpuId(Collection<? extends Serializable> spuId);

    Long edit(Serializable id, SkuPut param);

    /**
     * 更新库存, 基于乐观锁version版本
     * -- 最大更新一百次
     *
     * @param list
     */
    void optimisticAddStockQuantity(List<SkuStockQuantityPut> list);


}
